Real-time screen capture systems are widely demanded in many scenarios such as, for example, remote desktop applications, wireless projectors, software training manuals, and network game sharing. Screen content displayed may contain a wide category of data types including graphics, text, video and user-designed drawings. Compression of such varied screen content usually involves complicated computations such as segmentation and transformation. These operations inevitably pose a heavy burden on the processing powers of most computing devices.
Bandwidth cost is another challenging issue for real-time screen capture systems. Bandwidth is expensive and its growth has been much slower than that of processing capability. In particular, in a typical computer, the transfer rate from video memory to system memory is much smaller than the reverse, since only the transfer direction from system memory to video memory is optimized by hardware acceleration devices. Thus, the downloading process from video memory to system memory usually becomes a bottleneck in real-time screen capture systems.